package com.luli.entity;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 陆离
 * 2024/12/10
 */
// 假设Agency类已经定义，并且包含getId()和getParentId()方法
class Agency {
    private int id;
    private Integer parentId; // 使用Integer而不是int，以便能够表示null（没有父机构）

    // 构造函数、getter和setter省略...
    public int getId() {
        return id;
    }

    public Integer getParentId() {
        return parentId;
    }

    public Agency(int id, Integer parentId) {
        this.id = id;
        this.parentId = parentId;
    }

    // ...其他方法
}

public class AgencyFilterExample {

    public static void main(String[] args) {
        // 假设这是你的机构集合
        List<Agency> agencies = new ArrayList<>();
        agencies.add(new Agency(1, null)); // 没有父机构
        agencies.add(new Agency(2, 6));    // 父机构ID为6
        agencies.add(new Agency(3, 1));    // 父机构ID为1
        agencies.add(new Agency(4, 2));    // 父机构ID为2（间接父ID为6，但这里只考虑直接父ID）
        agencies.add(new Agency(5, 6));    // 父机构ID为6
    }
        public List<Integer> getAllIdByOrganId(Integer id, List<Agency> list) {
            List<Integer> ids = new ArrayList<>();
            for (Agency organ : list) {
                if (organ.getParentId() != null && organ.getParentId().equals(id)) {
                    // 找到了一个子机构，添加到结果列表中
                    ids.add(organ.getId());

                    // 递归查找该子机构的所有子机构
                    ids.addAll(getAllIdByOrganId(organ.getId(), list));
                }
            }
            return ids;
        }

        // 使用流（Streams）来过滤出父ID为6的机构，并收集这些机构的ID
//        List<Integer> agencyIds = agencies.stream()
//                .filter(agency -> agency.getParentId() != null && agency.getParentId().equals(6))
//                .map(Agency::getId) // 使用方法引用获取ID
//                .collect(Collectors.toList());
//
//        // 打印结果
//        for (Integer id : agencyIds) {
//            System.out.println("Agency ID: " + id);
//        }
}

